package com.dmall.hello.tdd;

public class FizzBuzzGame {

    /**
     * 体育老师决定玩一个报数游戏, 游戏的规则如下：
     * 1. 老师先说出两个不同的特殊数(都是个位数)，比如3, 5；然后让学生报数；
     * 2. 学生报数时，如果所报数字是「第一个特殊数」的倍数(比如3/15)或包含此数(比如13)，那么不能说该数字，而要说Fizz；
     * 3. 学生报数时，如果所报数字是「第二个特殊数」的倍数(比如5/25)或包含此数(比如51)，那么不能说该数字，而要说Buzz；
     * 4. 如果所报数字同时是「两个特殊数」的倍数(比如15/30)，那么也不能说该数字，而是要说FizzBuzz；
     * 5. 否则，直接说出要报的数字;
     */
    public String say(int firstNum, int secondNum, int num) {
        if (multi(firstNum, num) && multi(secondNum, num)) {
            return "FizzBuzz";
        }
        if (contains(firstNum, num) || multi(firstNum, num)) {
            return "Fizz";
        }
        if (contains(secondNum, num) || multi(secondNum, num)) {
            return "Buzz";
        }
        return String.valueOf(num);
    }

    private boolean contains(int firstNum, int num) {
        return String.valueOf(num).contains(String.valueOf(firstNum));
    }

    private boolean multi(int firstNum, int num) {
        return num % firstNum == 0;
    }
}
